package com.cruise.game.service.user;

import com.cruise.game.model.param.user.RechargeParam;
import com.cruise.game.model.param.user.WithdrawParam;
import com.cruise.game.model.vo.common.PageResult;
import com.cruise.game.model.vo.user.TransactionVO;
import com.cruise.game.model.vo.user.WithdrawalVO;

import java.util.Map;

/**
 * 用户交易服务接口
 *
 * @author cruise
 * @date 2025-02-28
 */
public interface UserTransactionService {

    /**
     * 充值
     *
     * @param userId 用户ID
     * @param param 充值参数
     * @return 支付信息
     */
    Map<String, Object> recharge(Long userId, RechargeParam param);

    /**
     * 提现
     *
     * @param userId 用户ID
     * @param param 提现参数
     * @return 提现申请ID
     */
    Long withdraw(Long userId, WithdrawParam param);

    /**
     * 获取交易记录
     *
     * @param userId 用户ID
     * @param type 交易类型
     * @param page 页码
     * @param pageSize 每页条数
     * @return 交易记录
     */
    PageResult<TransactionVO> getTransactionList(Long userId, String type, Integer page, Integer pageSize);

    /**
     * 获取提现记录
     *
     * @param userId 用户ID
     * @param status 状态
     * @param page 页码
     * @param pageSize 每页条数
     * @return 提现记录
     */
    PageResult<WithdrawalVO> getWithdrawalList(Long userId, String status, Integer page, Integer pageSize);
}